package com.matt.service;

import com.matt.commons.dto.sso.StaffDTO;
import com.matt.controller.po.ContractImportPO;
import com.matt.domain.Clientele;
import com.matt.domain.Leads;
import com.matt.foundation.query.ClienteleQuery;
import com.matt.foundation.query.PageableQuery;
import com.matt.foundation.vo.*;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * ******************
 * Created by Ron
 * from com.matt
 * on 2018/6/14 0014.
 * *******************
 */
public interface ClienteleService {

    Clientele addByLeads(Leads leads);

    List<Clientele> findByChildName(String areaId, String childName);

    ClienteleDetailVo save(String ticket, ClienteleSaveVo clienteleSaveVo, String productRecords, String areaId);

    /*
     * 2019-01-09,发现该方法为使用，注释掉，qd
     */
    //Page<Clientele> findByCondition(String ticket, ClienteleQuery clienteleQuery, Pageable pageable);

    Page<Clientele> continueClientelesOrFillMoney(ClienteleQuery clienteleQuery, Pageable pageable);

    ClienteleVo findById(String clienteleId);

    ClienteleVo findByLeadsId(String leadsId);

    ClienteleDetailVo update(String ticket, Clientele clientele, String productRecords, String channelId);

    AdviceNameVo findChilds(String areaId, String childName);

    Page<ClienteleVo> continueClienteles(ClienteleQuery clienteleQuery, Pageable pageable);

    Clientele updateClienteStaff(String ticket, String staffId, String staffName, String clienteleId);

    Page<ClienteleListVO> findByName(String areaId, String name, List<String> ids, Pageable pageable);

    Clientele deleteById(String ticket, String clienteleId);

    ContractStatusVo checkAllContractOver(String clienteleId);

    Clientele findBySystemChildName(String areaId, String sysChildName, String mobile);

    Clientele findBySystemChildNameAndId(String areaId, String id, String sysChildName);

    Clientele getById(String clienteleId);
    Clientele getById(String areaId, String clienteleId);

    Clientele saveOrigin(Clientele clientele);

    void importAdd( StaffDTO staff, List<ContractImportPO> importExcel);
}
